import Taro from '@tarojs/taro'
import dayjs, { Dayjs } from 'dayjs'
import { defineStore } from 'pinia'
import {$post, RecommandReturnParamNew} from '../@api'
import { AddressInfo } from '../@api/AddressInfo';
import { AddressInfoDirection } from '../type'
import { GoodsType } from '@/pages/sendGoods/goodsType';
import { RecommandReturnParam } from '@/@api/index'
export interface GoodsInfoType {
    cargoname: string
    package: string
    weight: string
    volume: string
    quantity: string
}
export interface BranchInfo {
    lat: string
    lng: string
    branchno: string
}
interface ClearingFormParams {
    /**
     * 签单单位编号
     */
    contractedNo: string
    /**
     * 签单单位名字
     */
    customerName: string
    /**
     * 结算点网点名字
     */
    companyName: string,
    /**
     * 回单要求
     */
    demand: any,
}
interface ReceivingTimeParm {
    /**
     * 开始时间
     */
    start: string,
    /**
     * 结束时间
     */
    end: string,
}
interface BillParams {
    /**
     * 第一次选择
     */
    i: number,

    /**
     * 第二次选择
     */
    j: number
}
interface CostList{
    /**
     * 费用名字
     */
    name:string,
    /**
     * 费用
     */
    m:string,
}
interface SuccessParams{
    /**
     * 订单id
     */
    orderId:string,
    /**
     * 发货码
     */
    sendCode:number
}
interface SendInfoStates {
    /**
     * 发货地址信息
     */
    sendAddressInfo: AddressInfo | null
    /**
     * 收货地址信息
     */
    getAddressInfo: AddressInfo | null
    sendBranchPromise: Promise<BranchInfo> | null
    getBranchPromise: Promise<BranchInfo> | null
    /**
     * 货物信息
     */
    goodsInfo: GoodsType[]
    /**
     * 货物总体积
     */
    goodsVolume:number,
     /**
     * 货物总重量
     */
    weigh:number,
      /**
     * 货物总件数
     */
    goodsNumber:number,
    /**
     * 货物新增修改  新增 null  修改 货物的index下标
     */
    goodsAddOrEditIndex: number | null
    /**
     * 付款方式
     */
    clearingForm: string
    /**
     * 签单信息
     */
    clearingFormInfo: ClearingFormParams
    /**
     * 是否接货  0否 1是
     */
    receivingStatus: string
    /**
     * 接货时间段
     */
    receivingTime: string | ReceivingTimeParm
    /**
     * 提货方式 1自提 2 送货 3直送
     */
    pickUpMode: string
    /**
     * 送货时间段
     */
    deliveryTime: string | ReceivingTimeParm
    /**
     * 送货类型 0 无 1送商超 2进仓 3报关
     */
    deliveryType: string
    /**
     * 是否卸货 0否 1是
     */
    dischargeCargo: string,
    /**
     * 卸货服务中的货物类型  1标准件 2非标件 3特殊件
     */
    dischargeServer: string,
    /**
     * 电梯 1 楼梯 0
     */
    dischargeElevator: string,
    /**
     * 楼层数
     */
    elevatorNum: string,
    /**
     * 是否加急 0否 1是
     */
    jj: string,
    /**
     * 承运类型  1快件  2 普件  剩下依次按顺序
     */
    sendType: string,
    /**
     * 保价金额
     */
    insuredMoney: string,
    /**
     * 保价费
     */
    insuredFee: string,
    /**
     * 是否保价 0否 1是
     */
    insuredPrice: string,
    /**
     * 回单类型
     */
    billServer: string,
    /**
     * 签几联
     */
    billNum: string,
    /**
     * 是否代收货款
     */
    collectionPayment: string
    /**
     * 代收货款金额
     */
    collectionMoney: string
    /**
     * 返还周期  1即日退 2三日退 3月结
     */
    returnCycle: string,
    /**
     * 代收服务费
     */
    serveFee: string,
    /**
     * 更多服务选择  1代收货款 2 附单据  3 包装服务
     *
     */
    moreChoose:string[]
    /**
     * 返还方式 1会员卡 2银行卡 3微信 4现金
     */
    returnType: string,
    /**
     * 银行卡号
     */
    returunAccount: any
    /**
     * 是否包装 0 1
     */
    packing:string,
    /**
     * 下单成功的信息
     */
    success:SuccessParams,
    /**
     * 接货网点信息
     */
    sendBranch: {
        pending: boolean,
        info: RecommandReturnParamNew
    }
    /**
     * 送货网点信息
     */
    getBranch: {
        pending: boolean,
        info: RecommandReturnParamNew
    },
    costList:CostList[],
    changeList:any,
}

const useSendGoodsStore = defineStore("sendGoods", {
    // 持久化存储插件其他配置
    state: (): SendInfoStates => ({
        sendAddressInfo: null,     //发货地址
        getAddressInfo: null,      //接货地址
        sendBranchPromise: null,
        getBranchPromise: null,
        //货物信息
        goodsInfo: [
        ],
        //货物总重量
        weigh: 0,
        //货物总体积
        goodsVolume:0,
        //货物总件数
        goodsNumber:0,
        // 货物页面  null为新增   nubmer为修改时候货物的下标
        goodsAddOrEditIndex: null,
        // 付款方式
        clearingForm: '1',
        //签单信息
        clearingFormInfo: {
            contractedNo: '',
            customerName: '',
            companyName: "",
            demand: {},
        },
        //是否接货
        receivingStatus: '0',
        //接货时间段
        receivingTime: {
            start: "",
            end: "",
        },
        // 送货方式
        pickUpMode: '2',
        //送货时间段
        deliveryTime: {
            start: "",
            end: "",
        },
        //送货类型
        deliveryType: '0',
        //是否卸货
        dischargeCargo: '0',
        //卸货中的货物类型
        dischargeServer: '1',
        //楼梯电梯
        dischargeElevator: '2',
        //楼层数
        elevatorNum: '1',
        //是否加急
        jj: '0',
        //承运类型
        sendType: '2',
        //保价金额
        insuredMoney: '0',
        //保价费
        insuredFee: '0',
        //是否保价
        insuredPrice: '0',
        //回单类型
        billServer: '',
        //签几联
        billNum: '',
        //是否代收货款
        collectionPayment: '0',
        //代收货款金额
        collectionMoney: '',
        //返回周期
        returnCycle: '1',
        //代收服务费
        serveFee: '0',
        //更多服务选择
        moreChoose:[],
        //返还方式
        returnType: '2',
        //银行卡号
        returunAccount: null,
        //是否包装
        packing:'0',
        //下单成功得信息
        success:{
            orderId:'',
            sendCode:0,
        },
        // 发货网点
        sendBranch: {
            pending: true,
            info: {
                AREA: '',
                /**
                 * 市
                 */
                CITY: '',
                /**
                 * 网点名字
                 */
                COMPANYNAME: '',
                /**
                 * 维度
                 */
                lat: '',
                /**
                 * 经度
                 */
                lng: '',
                /**
                 * 全部地址
                 */
                LOCAL: '',
                /**
                 * 省
                 */
                PROVINCE: '',
                /**
                 * 网点编号
                 */
                branchno: '',
                /**
                 * 距离 单位是米
                 */
                distance: 0,
                tel: '',
            }
        },
        // 收货网点
        getBranch: {
            pending: true,
            info: {
                AREA: '',
                /**
                 * 市
                 */
                CITY: '',
                /**
                 * 网点名字
                 */
                COMPANYNAME: '',
                /**
                 * 维度
                 */
                lat: '',
                /**
                 * 经度
                 */
                lng: '',
                /**
                 * 全部地址
                 */
                LOCAL: '',
                /**
                 * 省
                 */
                PROVINCE: '',
                /**
                 * 网点编号
                 */
                branchno: '',
                /**
                 * 距离 单位是米
                 */
                distance: 0,
                tel: '',
            }
        },
        costList: [
            {
              name: "工本费",
              m: '2',
            },
            {
              name: "送货费",
              m: '0',
            },
            {
              name: "接货费",
              m: '0',
            },
            {
              name: "长途运费",
              m:'0',
            },
            {
              name: "服务费",
              m: '0',
            },
            {
              name: "保价费",
              m: '0',
            },
            {
              name: "附单据费用",
              m: '0',
            },
            {
              name: "目的地带搬运卸货费",
              m: '0',
            },
          ],
          changeList:null
    }),

    actions: {
        async setSenderGetter(direcion: AddressInfoDirection, address: AddressInfo) {
            if (direcion === AddressInfoDirection.Sender) {
                this.sendAddressInfo = address
                //this.sendBranchPromise = this.getBranch('接货', this.sendAddressInfo)

            } else {
                this.getAddressInfo = address
                //this.getBranchPromise = this.getBranch('送货', this.getAddressInfo)
                this.pickupmode = '2'
            }
        },

    },

    getters: {

    },
})

export default useSendGoodsStore
